package com.czl.app.service;

import com.czl.app.model.UserInfo;

import java.util.List;
import java.util.Set;

public interface UserService {
    /**
     * 根据用户名返回用户信息
     * @param userName
     * @return 返回用户对应信息，如果找不到返回null.
     */
    UserInfo getUserInfo(String userName);

    int insert(UserInfo record);

    /**
     * 根据用户Id，返回用户拥有的角色
     * @param userId
     * @return 返回用户拥有的所有角色集合
     */
    Set<String> getRoles(Integer userId);

    /**
     * 添加用户
     * @param userName 用户名
     * @param password 密码
     * @param roleName 权限级别
     */
    void addUser(String userName, String password, String roleName)throws Exception;

    /**
     * 根据用户名查询userId并删除user_info 和 user_role
     */
    void delUser(String userName)throws Exception;

    /**
     * 管理员修改用户密码
     * @param userName
     */
    void adminUpadate(String userName);

    /**
     * 修改用户密码
     * @param oldPwd
     * @param password
     */
    void selfUpadate(String oldPwd,String password);

    /**
     * 判断旧密码是否符合
     */
    boolean verifyPassword(String password,String salt,String oldPassword);

    /**
     * 修改用户状态为禁止登录
     */
    void updDisableAccount(String userName);

    /**
     * 修改用户状态为允许登录
     */
    void updEnableAccount(String userName);

    /**
     * 修改用户拥有的角色
     */
    void updResetRoles(String userName,String roleName);

    /**
     * 查询一条用户信息
     */
    UserInfo findUserInfo(String userName);

    /**
     * 查询所有用户信息
     */
    List<UserInfo> findUserInfoAll();
}
